#pragma once

namespace Core{
	class ScriptManager{
	public:
		ScriptManager(EngineInterfacePtr engine);
		~ScriptManager();

		void loadScriptFile(std::string &filename);
		void unloadScriptFile(std::string &filename);

		void reloadLoadedScripts();
		void reloadSpecificScript(std::string &filename);
	private:
		void initializeState(LuaPlus::LuaState* state);

		std::map<std::string,std::pair<LuaPlus::LuaState*,std::string>> m_states;
		EngineInterfacePtr m_engine;
	};
}

typedef boost::shared_ptr<Core::ScriptManager> ScriptManagerPtr;